package com.dhecp.project.hr.mapper;

import java.util.List;
import java.util.Map;

import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.project.common.domain.UpdateDeleted;
import com.dhecp.project.common.domain.UpdateFlow;
import com.dhecp.project.hr.domain.OperateCompanyApply;
import com.dhecp.project.hr.domain.OperateCompanyExit;
import org.apache.ibatis.annotations.Param;

/**
 * 运营公司备案 DAO
 * @author DH-Xxj
 * @version 2022年3月3日
 */
public interface OperateCompanyApplyMapper extends GenericDao<OperateCompanyApply, String>{

	/**
	 * 修改删除标志（仅需 guid 和 deleted）
	 * @param updateDeleted 实体
	 * @return
	 * @author DH-Xxj
	 */
	int updateDeleted(UpdateDeleted updateDeleted);
	
	/**
	 * 修改流程状态及生效标志（仅需 guid、activeFlow、effectStock、updateTime）
	 * @param updateFlow 实体
	 * @return
	 * @author DH-Xxj
	 */
	int updateFlow(UpdateFlow updateFlow);
	
	/**
	 * 流转通过
	 */
	int updateFlowPass(OperateCompanyApply entity);

	/**
	 * 运营公司信息查询
	 * @param params
	 * @return List - OperateCompanyApply
	 * @author DH-Xxj
	 */
	List<OperateCompanyApply> findOperateCompanyInfo(Map<String, Object> params);

	/**
	 * 查询所有流转完的数据
	 * @author XDH
	 */
	List<OperateCompanyApply> listAllOn();

	/**
	 * 查询未流转完的数据
	 * @author XDH
	 */
	List<OperateCompanyApply> listUnEnd();

	/**
	 * 通过GUID查询数据
	 * @author XDH
	 */
	Map<String, Object> queryMapByGuid(@Param("guid") String guid);
	
	
	/**
	 * 从运营公司信息调入运营公司退出
	 * @param params
	 * @return List - OperateCompanyExit
	 * @author DH-Xxj
	 */
	List<OperateCompanyExit> callOperateCompanyExit(Map<String, Object> params);

	/**
	 * 根据guid查找公司
	 */
	OperateCompanyApply findByGuid(@Param("guid") String guid);

	/**
	 * 根据公司编码查询运营公司
	 */
	OperateCompanyApply findVGsBm(@Param("vGsBm") String vGsBm);

	/**
	 * 根据公司全称查询运营公司
	 */
	OperateCompanyApply findByAllName(@Param("allName") String allName);

	/**
	 * 根据公司简称查询运营公司
	 */
	OperateCompanyApply findByShortName(@Param("shortName") String shortName);

	/**
	 * 根据流转单号查询
	 */
	OperateCompanyApply findByBid(@Param("bid") String bid);

	/**
	 * 根据税号查询
	 */
	OperateCompanyApply findByVGsSh(@Param("vGsSh") String vGsSh);

	/**
	 * 根据税号查询（排除GUID）
	 */
	OperateCompanyApply findByVGsShExceptGuid(@Param("vGsSh") String vGsSh, @Param("guid") String guid);

	/**
	 * 根据公司名称查询（排除GUID）
	 */
	OperateCompanyApply findByVGsMcExceptGuid(@Param("vGsMc") String vGsMc, @Param("guid") String guid);

	List<OperateCompanyApply> queryCompanyList();

	/**
	 * 运营公司信息查询
	 * @param params
	 * @return List - OperateCompanyApply
	 * @author DH-Xxj
	 */
	List<OperateCompanyApply> select2(Map<String, Object> params);


	/**
	 * 根据存款账户和不是当前guid查询运营公司
	 */
	OperateCompanyApply findByDepositAccount(@Param("depositAccount") String depositAccount,@Param("guid") String guid);
}
